package cn.eu.mqtt.model.notice;

import lombok.Getter;
import lombok.Setter;

/**
 * 通知-全局配置信息
 */
@Getter
@Setter
public class GlobalConfig {
    /**
     * 时间戳
     */
    private String timestamp;
    /**
     * 心跳信息
     */
    private HeartbeatInfo heartbeatSet;
    /**
     * 轨迹信息
     */
    private TrackInfo trackingSet;
    /**
     * 解锁上报信息
     */
    private UnlockReport unlockReportSet;
    /**
     * 蓝牙信息
     */
    private BluetoothInfo bleSet;
    /**
     * 音频信息
     */
    private AudioInfo audioSet;
    /**
     * 移动信息
     */
    private Movement movementSet;

    @Getter
    @Setter
    public static class HeartbeatInfo {
        /**
         * 心跳间隔 <br/>
         * 单位：S；最大值。值：3600s， <br/>
         * 默认值：240s <br/>
         */
        private Integer interval;
    }

    @Getter
    @Setter
    public static class TrackInfo {
        /**
         * 是否位置跟踪 <br/>
         * 0 - 禁用 <br/>
         * 1 - 启用（默认）<br/>
         */
        private Integer trackingEn;
        /**
         * 是否报告定位数据 <br/>
         * 0 - 不报告上次定位情况（默认值） <br/>
         * 1 - 报告定位 <br/>
         */
        private Integer discardNofix;
        /**
         * 设备锁定时发送定位坐标的时间间隔 <br/>
         * 单位：S；范围：1-65535  <br/>
         * 300 （默认） <br/>
         */
        private Integer lockSDgap;
        /**
         * 设备锁定时发送定位坐标的时间间隔 <br/>
         * 单位：S；范围：1-65535 <br/>
         * 30 （默认） <br/>
         */
        private Integer unlockSDgap;
        /**
         * 设备由备用电池供电时发送定位坐标的时间间隔 <br/>
         * 单位：S；范围：1-65535  <br/>
         * 240 （默认） <br/>
         */
        private Integer backupSDgap;
    }

    @Getter
    @Setter
    public static class UnlockReport {
        /**
         * 车辆信息报告开关，注意：当设置启用时，车辆将报告信息（车辆信息报告）<br/>
         * 0 - 禁用（默认值） <br/>
         * 1 - 启用 <br/>
         */
        private Integer enable;
        /**
         * 报告间隔 <br/>
         * 单位：S; <br/>
         * 最大值：3600s，默认值：10s <br/>
         */
        private Integer reportGap;
    }

    @Setter
    @Getter
    public static class BluetoothInfo {
        /**
         * 蓝牙键 <br/>
         * “yOTmK50z”（默认） <br/>
         */
        private String key;
        /**
         * 蓝牙名称 <br/>
         * "Lock" （默认） <br/>
         */
        private String name;
    }

    @Getter
    @Setter
    public static class AudioInfo {
        /**
         * 是否启用语音提示 <br/>
         * 0 - 禁用 <br/>
         * 1 - 启用（默认值）<br/>
         */
        private Integer enable;
        /**
         * 普通音量；默认音量；<br/>
         * 摩托车/摩托车： <br/>
         * 范围：1-15 1分钟；15最大（默认3）： <br/>
         * 范围：1-3 1分钟；3最大（默认3）： <br/>
         */
        private Integer norVol;
        /**
         * 音频掩码，用来控制设备音频的启用开关；相应位置的含义：<br/>
         * 0 - 禁用; 1 - 启用;<br/>
         * <table>
         *     <tr><td>位置序列号</td><td>说明</td></tr>
         *     <tr><td>1</td><td>ECU已锁定</td></tr>
         *     <tr><td>2</td><td>ECU解锁</td></tr>
         *     <tr><td>3</td><td>主电源接通、充电</td></tr>
         *     <tr><td>4</td><td>非法移动报警</td></tr>
         *     <tr><td>5</td><td>故障报警</td></tr>
         *     <tr><td>6</td><td>查找车辆提示</td></tr>
         *     <tr><td>7</td><td>预留</td></tr>
         *     <tr><td>8</td><td>预留</td></tr>
         *     <tr><td>9</td><td>预留</td></tr>
         *     <tr><td>10</td><td>预留</td></tr>
         * </table>
         */
        private String mask;
    }

    @Getter
    @Setter
    public static class Movement {
        /**
         * 是否移动检测报警 <br/>
         * 0 - 禁用 <br/>
         * 1 - 启用（默认值） <br/>
         */
        private Integer enable;
        /**
         * 灵敏度级别 <br/>
         * 1 - 低 <br/>
         * 2 - 中（默认） <br/>
         * 3 - 高 <br/>
         */
        private Integer sensitivityLevel;
    }
}
